<?php
class Application_Model_Base_OrderArray
{
	private static function _swap($values, $index, $pos)
	{
		$mem = $values[$index];

		$values[$index] = $values[$pos];

		$values[$pos] = $mem;

		return $values;
	}

	private static function _compare($value1, $value2, $order)
	{
		if($value1 >= $value2)
		{
			if($order == 1)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
		else
		{
			if($order == 1)
			{
				return false;
			}
			else
			{
				return true;
			}
		}
	}

	private static function _order(& $values, $cond, $order)
	{
		for ($index = 0; $index <count($values); $index++)
		{
			for ($pos = $index; $pos <count($values) - 1; $pos++)
			{
				$arrayin = $values[$pos];
					
				$arraypos = $values[$pos + 1];
					
				if(self::_compare($arrayin[$cond],	$arraypos[$cond],$order))
				{
					$values = self::_swap($values, $pos, $pos + 1);
				}
			}
				
		}
	}

	public static function orderArray(& $values, $conds, $order)
	{
		if(is_string($conds))
		{
			self::_order($values, $conds, $order);
		}
		else
		{
			for ($index = count($conds) -1; $index >= 0; $index--)
			{
				self::_order($values, $conds[$index], $order);
			}
		}
	}

}